1. 首页 > 游戏攻略

游戏代码编程 游戏代码编程教学

C++语言很复杂,但它可以教会你很多关于数据类型、内存管理和代码链接的知识。

•来源:linux.cn•作者:SethKenlon•译者:Xingyu.Wang•

(本文字数:3473,阅读时长大约:4分钟)

C++语言很复杂,但它可以教会你很多关于数据类型、内存管理和代码链接的知识。

学习一门编程语言有几种方法。如果你是编码新手,你通常会学习一些基本的计算机编码概念,并尝试应用它们。如果你已经知道如何用另一种语言进行编码,你可以重新学习编码概念在新语言中是如何表达的。

不管是哪种情况,学习这些新原理的便捷方法是创建一个简单的猜谜游戏。这会迫使你了解一门语言如何接收输入和发送输出,如何比较数据,如何控制程序的流程,以及如何利用条件来影响结果。它还确保你知道一门语言是如何组织其代码的;例如,Lua或Bash可以很容易地作为脚本运行,而Java则需要你创建一个类。

在本文中,我将演示如何用C++在终端上实现猜谜游戏。

安装依赖关系

要跟上本文的步伐,你需要C++和一个编译器。

在Linux上,你可以通过从你的发行版软件仓库中安装QtCreatorIDE来获得你所需要的一切。

在Fedora、CentOS或RHEL上:

$sudodnfinstallqt-creator

在Debian、Ubuntu、Chromebook或类似的系统上:

$sudoaptinstallqtcreator

本文并没有使用QtCreatorIDE,但它是一个安装你所需要的一切的简单方法,对于复杂的C++项目(包括那些带有GUI的项目),它是一个必不可少的工具。在macOS或Windows上,按照Qt网站上的安装说明进行安装。

设置包含和命名空间

C++的核心语言是精简的。即使是一个简单的应用程序也需要使用额外的库。这个应用程序使用iostream来获得对cout和cin关键字的访问。

另外,确保程序使用std命名空间:

#include<iostream>usingnamespacestd;

这并不是绝对必要,但如果不将命名空间设置为std,所有来自iostream库的关键字都需要一个命名空间前缀。例如,我不能写作cout,而是要写作std::cout。

C++中的语句以分号结束。

创建一个函数

每个C++应用程序至少需要一个函数。一个C++应用程序的主函数必须称为main,它必须返回一个整数(int),这符合POSIX的期望,即一个进程在成功时返回0,而在失败时返回其他值。你可以通过为它提供返回类型和名称来创建一个新函数。

intmain(){ //codegoeshere}

实现程序逻辑

游戏代码必须首先产生一个随机数供玩家猜测。在C++中,你可以通过建立一个用于生成伪随机数的种子来实现。一个简单的种子就是当前的时间。一旦有了种子,你就可以得到一个在1和100之间的数字。通过调用rand函数,并设置上限值100来产生一个从0到99的随机数,所以无论选择了什么数字都要加1,并将结果分配给一个名为number的变量。你还必须声明一个变量来保存玩家的猜测值。为了清楚起见,我称这个变量为guess。

这个示例代码还包括一个调试语句,告诉你随机数到底是什么。这对于猜测游戏来说不是很好,但它使测试速度快了很多。以后,你可以删除这一行,或者直接在行前面用//注释出来:

srand(time(NULL));intnumber=rand()%100+1;intguess=0;cout<<number<<endl;//debug

增加do-while和if语句

C++中的do-while语句以关键字do开头,并将你希望C++做的所有事情用括号括起来。用while关键字结束语句,后面是必须满足的条件(括号内):

do{ //codehere}while(number!=guess);

游戏代码出现在if、elseif和else语句之间,为玩家提供提示。

首先,用cout语句提示玩家猜测。cout函数将输出打印到stdout上。因为cout语句没有连着endl(endline)函数,所以没有换行。紧接着这个cout语句,通过使用cin函数告诉C++等待输入。正如你所猜测的那样,cin等待来自stdin的输入。

接下来,程序进入if控制语句。如果玩家的猜测大于number变量中包含的伪随机数,那么程序就会打印出一个提示,后面是一个换行符。这就中断了if语句,但C++仍然被困在do-while循环中,因为它的条件(number变量等于guess)还没有满足。

如果玩家的猜测小于number变量中包含的伪随机数,那么程序就会打印出一个提示,后面是一个换行符。这再次中断了if语句,但程序仍然被困在do-while循环中。

当guess等于number时,最终满足关键条件,触发else语句,do-while循环结束,程序结束:

do{  cout<<"Guessanumberbetween1and100:";  cin>>guess;  if(guess>number){cout<<"Toohigh.\n"<<endl;}  elseif(guess<number){cout<<"Toolow.\n"<<endl;}  else{    cout<<"That'sright!\n"<<endl;    exit(0);  }//fi}while(number!=guess);return0;}//main

构建代码和玩游戏

你可以用GCC构建你的应用程序:

$g++-oguess.binguess.cpp

运行二进制文件试试:

$./guess.bin74Guessanumberbetween1and100:76Toohigh.Guessanumberbetween1and100:1Toolow.Guessanumberbetween1and100:74That'sright!

成功了!

试试C++吧

C++语言很复杂。为终端编写C++应用程序可以让你学到很多关于数据类型、内存管理和代码链接的知识。试着用C++编写一个有用的实用程序,看看你能发现什么!

via:opensource.com

作者:SethKenlon选题:lujun9972译者:wxy校对:wxy

本文由LCTT原创编译,Linux中国荣誉推出

点击“了解更多”可访问文内链接